/*************************************************************************************
*                                  SRL ENGINE                                        *
*                                                                                    *
*                                                                                    *
*  File : SRL_Terrain.h                                                              *
*  Author: SRL Killing                                                               *
*  Date: 25/02/10 20:30                                                              *
*  Description:                                                                      *
*                                                                                    *  
*  Licence :  LGPL                                                                   *
*                                                                                    *
*    Copyright (C) 2010 Pecatte Baptiste                                             *
*                                                                                    *
*    This program is free software; you can redistribute it and/or                   *
*    modify it under the terms of the GNU Lesser General Public                      *
*    License as published by the Free Software Foundation; either                    *
*    version 2.1 of the License, or (at your option) any later version.              *
*                                                                                    *
*    This program is distributed in the hope that it will be useful,                 *
*    but WITHOUT ANY WARRANTY; without even the implied warranty of                  *
*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU                *
*    Lesser General Public License for more details.                                 *
*                                                                                    *
*    You should have received a copy of the GNU Lesser General Public                *
*    License along with this program; if not, write to the Free Software             *
*    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA    *
*                                                                                    *
**************************************************************************************/

#ifndef DefineHeaderTerrain
#define DefineHeaderTerrain

#define SRL_Top 0 
#define SRL_TopRight 0 
#define SRL_Left 1 
#define SRL_TopLeft 1 
#define SRL_Bottom 2 
#define SRL_BottomLeft 2 
#define SRL_Right 3 
#define SRL_BottomRight 3 

namespace srl {
    class TerrainLOD;
    
    class TNode {
        public:
            TNode(srl::TNode* pParent, int Direction, TerrainLOD* pRoot);
            void Draw();
            void CreateChild(int Direction);
            TNode* Adjacent(int Direction);
            void Init();
            float Differance(int Direction);
            
        protected:
            TNode();
            srl::Vector<float> Center;
            srl::Vector<float> Corner[4];
            srl::Vector<float> Side[4];
            srl::Vector<float> Normales[4];
            bool               ASide[4];
            int                Niveau;
            
            srl::TNode* Child[4];
            srl::TNode* Parent;
            srl::TerrainLOD* Root;
    };
    
    class TerrainLOD : public TNode {
        public:
            TerrainLOD();
            void Init();
        
            float Width;
            float Height;
            int Precision;
            float HauteurMax;
            float Datas[50][50];
    };
    
};

#endif
